জাভাতে থ্রেড তৈরি করার দুটি মূল পদ্ধতি রয়েছে:
- Thread ক্লাস ব্যবহার করে
- Runnable ইন্টারফেস ব্যবহার করে
এই দুটি পদ্ধতির বিস্তারিত ব্যাখ্যা, উদাহরণ এবং তুলনা নিচে দেওয়া হলো:
পদ্ধতি ১: Thread ক্লাস ব্যবহার করে থ্রেড তৈরি
Thread ক্লাস এক্সটেন্ড করে থ্রেড তৈরি করা সহজ, কারণ এটি জাভার বিল্ট-ইন ক্লাস।
কোড উদাহরণ:
class MyThread extends Thread {
@Override
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println("Thread Class: " + i);
try {
Thread.sleep(500); // থ্রেডকে কিছুক্ষণের জন্য থামান
} catch (InterruptedException e) {
System.out.println("Thread interrupted");
}
}
}
}
public class ThreadExample {
public static void main(String[] args) {
MyThread thread = new MyThread();
thread.start(); // থ্রেড চালু করুন
}
}
বৈশিষ্ট্য:
Threadক্লাস এক্সটেন্ড করেrun()মেথড ওভাররাইড করতে হয়।- নতুন থ্রেড শুরু করতে
start()মেথড ব্যবহার করা হয়।
পদ্ধতি ২: Runnable ইন্টারফেস ব্যবহার করে থ্রেড তৈরি
Runnable ইন্টারফেস ব্যবহার করে থ্রেড তৈরি করা আরও নমনীয়, কারণ এতে একাধিক ইনহেরিট্যান্সের সীমাবদ্ধতা থাকে না।
কোড উদাহরণ:
class MyRunnable implements Runnable {
@Override
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println("Runnable Interface: " + i);
try {
Thread.sleep(500); // থ্রেডকে কিছুক্ষণের জন্য থামান
} catch (InterruptedException e) {
System.out.println("Thread interrupted");
}
}
}
}
public class RunnableExample {
public static void main(String[] args) {
MyRunnable myRunnable = new MyRunnable();
Thread thread = new Thread(myRunnable); // Runnable থেকে Thread তৈরি
thread.start(); // থ্রেড চালু করুন
}
}
বৈশিষ্ট্য:
Runnableইন্টারফেস ইমপ্লিমেন্ট করেrun()মেথড ওভাররাইড করতে হয়।Threadক্লাসের একটি অবজেক্ট তৈরি করতেRunnableপাস করতে হয়।
Thread Class বনাম Runnable Interface এর তুলনা
| বিষয় | Thread Class | Runnable Interface |
|---|---|---|
| পদ্ধতি | Thread ক্লাস এক্সটেন্ড করে | Runnable ইন্টারফেস ইমপ্লিমেন্ট করে |
| ইনহেরিট্যান্স | একটি ক্লাস একবারেই Thread এক্সটেন্ড করতে পারে | একটি ক্লাস একাধিক ইন্টারফেস ইমপ্লিমেন্ট করতে পারে |
| নমনীয়তা | কম নমনীয়, কারণ একাধিক ক্লাস এক্সটেন্ড করা যায় না | আরও নমনীয়, কারণ এটি অন্যান্য ইন্টারফেসের সাথে ইমপ্লিমেন্ট করা যায় |
| অবজেক্ট শেয়ারিং | শেয়ার করা কঠিন | শেয়ার করা সহজ |
| সিনট্যাক্স | সরাসরি Thread এক্সটেন্ড করতে হয় | Runnable ইমপ্লিমেন্ট করে Thread তৈরি করতে হয় |
| উদাহরণ ব্যবহার | সহজ উদাহরণ | জটিল পরিস্থিতিতে বেশি কার্যকর |
উদাহরণ: একাধিক থ্রেড তৈরি করা
Thread Class দিয়ে:
class Thread1 extends Thread {
@Override
public void run() {
System.out.println("Thread 1 is running...");
}
}
class Thread2 extends Thread {
@Override
public void run() {
System.out.println("Thread 2 is running...");
}
}
public class MultiThreadExample {
public static void main(String[] args) {
Thread1 t1 = new Thread1();
Thread2 t2 = new Thread2();
t1.start();
t2.start();
}
}
Runnable Interface দিয়ে:
class Task1 implements Runnable {
@Override
public void run() {
System.out.println("Task 1 is running...");
}
}
class Task2 implements Runnable {
@Override
public void run() {
System.out.println("Task 2 is running...");
}
}
public class MultiRunnableExample {
public static void main(String[] args) {
Thread t1 = new Thread(new Task1());
Thread t2 = new Thread(new Task2());
t1.start();
t2.start();
}
}
যখন কোনটি ব্যবহার করবেন
Threadক্লাস ব্যবহার করুন:- যদি আপনার ক্লাস শুধুমাত্র একটি থ্রেড হিসাবে কাজ করে।
- এবং অন্য কোনো ক্লাস এক্সটেন্ড করার প্রয়োজন না থাকে।
Runnableইন্টারফেস ব্যবহার করুন:- যদি আপনার ক্লাস অন্য কোনো ক্লাস এক্সটেন্ড করার প্রয়োজন হয়।
- এবং শেয়ারযোগ্য থ্রেড তৈরি করতে চান।
Thread ক্লাস সহজ এবং সরাসরি হলেও Runnable ইন্টারফেস জাভা কনকারেন্সি ব্যবহারের জন্য আরও নমনীয় এবং প্রায়শই প্রেফার্ড। সঠিক পদ্ধতি নির্বাচন করতে হলে আপনার প্রয়োজন ও প্রেক্ষাপট বিবেচনা করুন।
Content added By
Read more